#pragma once
#ifndef _SCENE_H
#define _SCENE_H

#include <list>
#include <vector>
#include <math.h>
#include "../common/Ptr.hpp"
#include "../common/SceneCoordSpaceInfo.h"
#include "../common/myglStringControl.h"
#include "TerrainModel.h"
#include "Model.h"
#include "Object.h"
#include "BattleStatus.h"

using namespace std;



class Scene
{
private:
  
  // Size of the scene
  unsigned int _width, _height, _altitude;
  
  // Elements in the scene
  Ptr< TerrainModel > _pTerrainModel;
  Ptr< myglStringControl > _pStringPainter;
  Ptr< list< Ptr< Object > > > _pObjects;
  Ptr< vector< Model > > _pModels;
  Ptr< BattleStatus > _pStatus;
  SceneCoordSpaceInfo _coordSpaceInfo;

  void _draw_obj (Model& model, Ptr< Object > object);

public:
  Scene (Ptr< TerrainModel > pTerrainModel,
         Ptr< myglStringControl > pStringPainter,
         Ptr< list< Ptr< Object > > > pObjects,
         Ptr< vector< Model > > pModels,
         Ptr< BattleStatus > pStatus,
         const SceneCoordSpaceInfo& coordSpaceInfo);
  void draw ();


};

#endif